class Queue:
    internalList = []
	#Common methods
    def isEmpty(self):
        return self.size() == 0

    def size(self):
        return len(self.internalList)

    def checkNotEmpty(self):
        if self.isEmpty():
            raise Exception("Empty Queue!  There are no elements to work with.")

    def __iter__(self):
        return self.internalList.__iter__()

    def __repr__(self):
        return "a Queue with[" + ", ".join(map(str, self.internalList)) + "]"
    #End of Common methods
    

    def add(self, element):
        self.internalList.append(element)

    def poll(self):
        self.checkNotEmpty()
        return self.internalList.pop(0)

    def peek(self):
        self.checkNotEmpty()
        return self.internalList[0]

def createQueue():
    return Queue()

def addToQueue(queue, element):
    queue.add(element)

def pollFromQueue(queue):
    return queue.poll()

def peekFromQueue(queue):
    return queue.peek()

def isEmptyQueue(queue):
    return queue.isEmpty()

def sizeOfQueue(queue):
    return queue.size()
